Every day, people submit millions of search queries, many of which are transmitted over communication networks to search server systems. Users have come to expect nearly instantaneous search results (e.g., search results that are produced with very low latency) when performing search queries even when searching through large data sets.
Conventional approaches to processing search queries tend to have search times that scale with the size of the data set over which the search is being performed. More specifically, in many conventional search implementations, the entire index is searched for index entries matching the search query. Thus, in these implementations indexes for large data sets require a search over a larger number of index entries. Moreover, when a search query includes multiple operands, typically an intermediate result set including representations of all of the data items matching each operand is pulled into memory and compared with intermediate result sets for other operands in accordance with the search query. For a large data set, these intermediate result sets can be very large, and consequently, using conventional approaches to processing search queries is inefficient and unduly time consuming. These and other problems with conventional approaches to processing search queries described above are reduced or eliminated by the systems and methods described below.